import java.util.ArrayList;

public class listaVariables {

    ArrayList<nodoVariable> variables;

    public listaVariables() {
        variables = new ArrayList<nodoVariable>();
    }

    public listaVariables(ArrayList<nodoVariable> v2) {
        variables = v2;
    }

    public void mete(String nomVar, String cadena, int nivel) {

        variables.add(new nodoVariable(nomVar, cadena, nivel));
    }

    public void mete(String nomVar, String cadena, int nivel, boolean uso) {
        variables.add(new nodoVariable(nomVar, cadena, nivel, uso));
    }

    public boolean estableceCampos(String cadena, String nuevaCadena, Integer nivel, Boolean uso) {
        boolean esta = false;
        String compara;
        if (cadena != null) {
            for (int i = 0; i < variables.size() && !esta; i++) {
               compara = (variables.get(i)).obtenNomVar();
                if (cadena.equals(compara)) {
                    esta = true;
                    if(nuevaCadena!=null) {
                        variables.get(i).estableceCadena(nuevaCadena);
                    }
                    if (nivel != null) {
                        variables.get(i).estableceNivel(nivel);
                    }
                    if (uso != null) {
                        variables.get(i).estableceUtilizado(uso);
                    }
                }

            }
        }
        return (esta);
    }

    public boolean estableceCadena(String vieja, String nueva){
        return(estableceCampos(vieja,nueva,null,null));
    }

    public boolean estableceNivel(String cadena, int nivel) {
        return(estableceCampos(cadena,null,nivel,null));
    }

    public boolean estableceUso(String cadena, boolean uso){
        return(estableceCampos(cadena,null,null,uso));
    }

    public boolean usa(String cadena){
        return(estableceCampos(cadena,null,null,true));
    }

    public boolean desusa(String cadena){
        return(estableceCampos(cadena,null,null,false));
    }

    public boolean esUsado(String cadena){
        boolean esta = false;
        boolean utilizado= false;

        if (cadena != null) {
            for (int i = 0; i < variables.size() && !esta; i++) {
                if (cadena.equals(variables.get(i).obtenCadena())) {
                   utilizado= true;
                }
            }
        }
        return (utilizado);
    }

    @Override
    public String toString(){
        String retorno="";

            for (int i = 0; i < variables.size(); i++) {
                if(variables.get(i).esUtilizado())
               retorno+= variables.get(i).toString();
            }

        return (retorno);
    }
}

